{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 第8章 降维\n",
    ">- 许多机器学习问题涉及训练实例的几千甚至上百万个特征。\n",
    ">- 后面我们将会看到， 这不仅导致训练非常缓慢，\n",
    ">- 也让我们更加难以找到好的解决方案。\n",
    ">- 这个问题通常被称为维度的诅咒。\n",
    ">- 幸运的是， 对现实世界的问题， 我们一般可以大量减少特征的数量， \n",
    ">- 将棘手的问题转化成容易解决的问题。 \n",
    ">- 例如， MNIST图像：图像边框的像素位上几乎全是白色，所以我们完全可以在训练集中抛弃这些像素位， 也不会丢失太多信息。 \n",
    ">-  此外， 两个相邻像素通常是高度相关的：如果将它们合并成一个像素（例如， 取两个像素强度的平均值），也不会丢失太多信息。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 维度的诅咒"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](img/8-1.png)\n",
    "\n",
    "- 事实证明， 在高维空间中， 许多事物的行为都迥然不同。\n",
    "- 例如，如果你在一个单位平面（1×1的正方形） 内随机选择一个点，\n",
    "- 那么这个点离边界的距离小于0.001的概率只有约0.4%（也就是说，一个随机的点不大可能刚好位于某个维度的“极端”） 。\n",
    "- 但是，在一个10000维的单位超立方体（1×1…×1立方体， 一万个1） 中， 这个概率大于99.999999%。高维超立方体中大多数点都非常接近边界。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 还有一个更麻烦的区别：\n",
    "- 如果你在单位平面中随机挑两个点， 这两个点之间的平均距离大约为0.52。\n",
    "- 如果在三维的单位立方体中随机挑两个点，两点之间的平均距离大约为0.66。 \n",
    "- 但是， 如果在一个100万维的超立方体中随机挑两个点呢？\n",
    "- 不管你相信与否， 平均距离大约为408.25（约等于 ） ！ \n",
    "- 这是非常违背直觉的： 位于同一个单位超立方体中的两个点， 怎么可能距离如此之远？ \n",
    "- 这个事实说明高维数据集有很大可能是非常稀疏的：大多数训练实例可能彼此之间相距很远。 \n",
    "- 当然， 这也意味着新的实例很可能远离任何一个训练实例， 导致预测跟低维度相比， 更加不可靠， - 因为它们基于更大的推测。 \n",
    "- 简而言之， 训练集的维度越高， 过度拟合的风险就越大。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 理论上来说， 通过增大训练集， 使训练实例达到足够的密度， 是可以解开维度的诅咒的。 \n",
    "- 然而不幸的是， 实践中， 要达到给定密度所需要的训练实例数量随着维度增加呈指数式上升。 \n",
    "- 仅仅100个特征下（远小于MNIST问题） ， \n",
    "- 要让所有训练实例（假设在所有维度上平均分布） 之间的平均距离小于0.1， \n",
    "- 你需要的训练实例数量就比可观察宇宙中的原子数量还要多。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": false
   },
   "source": [
    "# 数据降维的主要方法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 投影"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 在大多数现实世界的问题里， 训练实例在所有维度上并不是均匀分布的。 \n",
    "- 许多特征几乎是不变的， 也有许多特征是高度相关联的（如前面讨论的MNIST数据集） 。 \n",
    "- 因此， 高维空间的所有训练实例实际上（或近似于） 受一个低得多的低维子空间所影响。 \n",
    "- 这听起来很抽象， 所以我们来看一个例子。 \n",
    "- 在图8-2中， 你可以看到一个由圆圈表示的3D数据集。\n",
    "\n",
    "![](img/8-2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 注意看， 所有的训练实例都紧挨着一个平面： 这就是高维（3D） 空间的低维（2D） 子空间。\n",
    "- 现在， 如果我们将每个训练实例垂直投影到这个子空间（如图中实例到平面之间的短线所示），\n",
    "- 我们将得到如图8-3所示的新2D数据集。 \n",
    "- 我们已经将数据集维度从三维降到了二维。 \n",
    "- 注意， 图中的轴对应的是新特征z1和z2（平面上投影的坐标） 。\n",
    "\n",
    "![](img/8-3.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 流形学习"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 不过投影并不总是降维的最佳方法。 在许多情况下， 子空间可能会弯曲或转动， 比如图8-4所示的著名的瑞士卷玩具数据集。\n",
    "\n",
    "![](img/8-4.png)\n",
    "\n",
    "- 简单地进行平面投影（例如放弃x3） 会直接将瑞士卷的不同层压扁在一起， 如图8-5的左图所示。\n",
    "- 但是你真正想要的是将整个瑞士卷展开铺平以后的2D数据集， 如图8-5的右图所示。\n",
    "\n",
    "![](img/8-5.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 瑞士卷就是二维流形的一个例子。 \n",
    "- 简单地说， 2D流形就是一个能够在更高维空间里面弯曲和扭转的2D形状。 \n",
    "- 更概括地说， d维流形就是n（其中， d＜n） 维空间的一部分， 局部类似于一个d维超平面。\n",
    "- 在瑞士卷的例子中， d=2， n=3： 它局部类似于一个2D平面， 但是在第三个维度上卷起。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 许多降维算法是通过对训练实例进行流形建模来实现的， 这被称为流形学习。 \n",
    "- 它依赖于流形假设， 也称为流形假说， 认为大多数现实世界的高维度数据集存在一个低维度的流形来重新表示。 \n",
    "- 这个假设通常是凭经验观察的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 再次说到MNIST数据集： 所有手写的数字图像都有一些相似之处。 \n",
    "- 它们由相连的线条组成， 边界都是白色的， 或多或少是居中的，等等。 \n",
    "- 如果你随机生成图像， 只有少到不能再少的一部分可能看起来像手写数字。 \n",
    "- 也就是说， 如果你要创建一个数字图像， \n",
    "- 你拥有的自由度要远远低于允许你创建任意图像的自由度。 \n",
    "- 而这些限制正倾向于将数据集挤压成更低维度的流形。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 流形假设通常还伴随着一个隐含的假设： \n",
    "- 如果能用低维空间的流形表示， 手头的任务（例如分类或者回归） 将变得更简单。 \n",
    "- 例如， 图8-6的上面一行， 瑞士卷被分为两类： 3D空间中（左上） 决策边界将会相当复杂， \n",
    "- 但是在展开的2D流形空间（右上） ， 决策边界是一条简单的直线。\n",
    "\n",
    "![](img/8-6-1.png)![](img/8-6-2.png)\n",
    "\n",
    "![](img/8-6-3.png)![](img/8-6-4.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PCA"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 主成分分析（PCA） 是迄今为止最流行的降维算法。 \n",
    "- 它先是识别出最接近数据的超平面， 然后将数据投影其上。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 保留差异性\n",
    "- 将训练集投影到低维超平面之前， 需要选择正确的超平面。 \n",
    "- 例如图8-7的左图代表一个简单的2D数据集， 沿三条不同的轴（即一维超平面） 。 \n",
    "- 右图是将数据集映射到每条轴上的结果。 \n",
    "- 正如你所见， 在实线上的投影保留了最大的差异性， \n",
    "- 而点线上的投影只保留了非常小的差异性， 虚线上的投影差异性居中\n",
    "\n",
    "![](img/8-7.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 选择保留最大差异性的轴看起来比较合理， 因为它可能比其他两种投影丢失的信息更少。 \n",
    "- 要证明这一选择， 还有一种方法， 比较原始数据集与其轴上的投影之间的均方距离， 使这个均方距离最小的轴是最合理的选择， 也就是实线代表的轴。 这也正是PCA背后的简单思想"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 主成分"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 主成分分析（PCA） 可以在训练集中识别出哪条轴对差异性的贡献度最高。\n",
    "- 在图8-7中， 即是由实线表示的轴。 同时它也找出了第二条轴， 它对剩余差异性的贡献度最高， 与第一条轴垂直。 \n",
    "- 因为这个例子是二维的， 所以除了这条点线再没有其他。 \n",
    "- 如果是在更高维数据集中， PCA还会找到与前两条都正交的第三条轴， 以及第四条、 第五条， 等等——轴的数量与数据集维度数量相同。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 定义第i条轴的单位向量就叫作第i个主成分（PC） 。 \n",
    "- 图8-7中，第一个主成分是c1， 第二个主成分是c2。 \n",
    "- 在图8-2中， 前两个主成分是平面里正交的箭头所示， 第三个主成分则是垂直于平面（向上或向下）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\n",
    "\\mathbf{V} =\n",
    "\\begin{pmatrix}\n",
    "  \\mid & \\mid & & \\mid \\\\\n",
    "  \\mathbf{c_1} & \\mathbf{c_2} & \\cdots & \\mathbf{c_n} \\\\\n",
    "  \\mid & \\mid & & \\mid\n",
    "\\end{pmatrix}\n",
    "$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(4)\n",
    "m = 60\n",
    "w1, w2 = 0.1, 0.3\n",
    "noise = 0.1\n",
    "\n",
    "angles = np.random.rand(m) * 3 * np.pi / 2 - 0.5\n",
    "X = np.empty((m, 3))\n",
    "X[:, 0] = np.cos(angles) + np.sin(angles)/2 + noise * np.random.randn(m) / 2\n",
    "X[:, 1] = np.sin(angles) * 0.7 + noise * np.random.randn(m) / 2\n",
    "X[:, 2] = X[:, 0] * w1 + X[:, 1] * w2 + noise * np.random.randn(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_centered = X - X.mean(axis=0)\n",
    "U, s, V = np.linalg.svd(X_centered)\n",
    "c1 = V.T[:, 0]\n",
    "c2 = V.T[:, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.93636116, 0.29854881, 0.18465208])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.34027485,  0.90119108,  0.2684542 ])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.93636116, -0.34027485, -0.08626012],\n",
       "       [ 0.29854881,  0.90119108, -0.31420255],\n",
       "       [ 0.18465208,  0.2684542 ,  0.94542898]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V.T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 低维度投影"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 一旦确定了所有主成分， 就可以将数据集投影到由前d个主成分定义的超平面上， 从而将数据集的维度降到d维。 \n",
    "- 这个超平面的选择， 能确保投影保留尽可能多的差异性。 \n",
    "- 例如， 在图8-2中， 3D数据集投影到由前两个主成分定义的2D平面上， 就保留了原始数据集的大部分差异。 \n",
    "- 因此， 2D投影看起来非常像原始的3D数据集。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 将训练集投影到低维度\n",
    "- 要将训练集投影到超平面上， 简单地计算训练集矩阵X和矩阵Wd的点积即可， \n",
    "- Wd是包含前d个主成分的矩阵（即由矩阵VT的前d列组成的矩阵）\n",
    "$$ X_{d-proj}=X·W_d $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "W2 = V.T[:,:2]\n",
    "X2D = X_centered.dot(W2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.26203346, -0.42067648],\n",
       "       [ 0.08001485,  0.35272239],\n",
       "       [-1.17545763, -0.36085729],\n",
       "       [-0.89305601,  0.30862856],\n",
       "       [-0.73016287,  0.25404049],\n",
       "       [ 1.10436914, -0.20204953],\n",
       "       [-1.27265808, -0.46781247],\n",
       "       [ 0.44933007, -0.67736663],\n",
       "       [ 1.09356195,  0.04467792],\n",
       "       [ 0.66177325,  0.28651264],\n",
       "       [-1.04466138,  0.11244353],\n",
       "       [ 1.05932502, -0.31189109],\n",
       "       [-1.13761426, -0.14576655],\n",
       "       [-1.16044117, -0.36481599],\n",
       "       [ 1.00167625, -0.39422008],\n",
       "       [-0.2750406 ,  0.34391089],\n",
       "       [ 0.45624787, -0.69707573],\n",
       "       [ 0.79706574,  0.26870969],\n",
       "       [ 0.66924929, -0.65520024],\n",
       "       [-1.30679728, -0.37671343],\n",
       "       [ 0.6626586 ,  0.32706423],\n",
       "       [-1.25387588, -0.56043928],\n",
       "       [-1.04046987,  0.08727672],\n",
       "       [-1.26047729, -0.1571074 ],\n",
       "       [ 1.09786649, -0.38643428],\n",
       "       [ 0.7130973 , -0.64941523],\n",
       "       [-0.17786909,  0.43609071],\n",
       "       [ 1.02975735, -0.33747452],\n",
       "       [-0.94552283,  0.22833268],\n",
       "       [ 0.80994916,  0.33810729],\n",
       "       [ 0.20189175,  0.3514758 ],\n",
       "       [-1.34219411, -0.42415687],\n",
       "       [ 0.13599883,  0.37258632],\n",
       "       [ 0.8206931 , -0.55120835],\n",
       "       [ 0.90818634, -0.31869127],\n",
       "       [ 0.06703671,  0.42486148],\n",
       "       [ 0.13936893,  0.41906961],\n",
       "       [-0.37356775,  0.27320849],\n",
       "       [ 0.7312441 ,  0.23441131],\n",
       "       [-0.5230355 ,  0.46621776],\n",
       "       [ 0.86146183,  0.30212526],\n",
       "       [-0.33203239,  0.47352674],\n",
       "       [-0.99467436,  0.18342807],\n",
       "       [ 1.04520043, -0.32697207],\n",
       "       [ 0.87477048,  0.18062856],\n",
       "       [ 0.30457923,  0.43904343],\n",
       "       [-0.63685997,  0.32851826],\n",
       "       [ 1.1287259 , -0.11627335],\n",
       "       [ 0.03836205,  0.49036349],\n",
       "       [-0.41386843,  0.31734423],\n",
       "       [-1.32417938, -0.1944472 ],\n",
       "       [ 0.92968677,  0.18429606],\n",
       "       [-0.40274964,  0.34154025],\n",
       "       [ 1.11480941, -0.24138847],\n",
       "       [ 0.31915065,  0.27787663],\n",
       "       [ 1.02666316, -0.34676546],\n",
       "       [-1.24145806, -0.35049349],\n",
       "       [ 0.66770361,  0.32262317],\n",
       "       [-1.16397896,  0.03648137],\n",
       "       [ 0.68326064,  0.22756871]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X2D"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "X2D_old = X2D"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用Scikit-Learn\n",
    "- 跟我们之前一样， Scikit-Learn的PCA类也使用SVD分解来实现主成分分析。 \n",
    "- 以下代码应用PCA将数据集的维度降到二维（注意它会自动处理数据集中）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "\n",
    "pca = PCA(n_components=2)\n",
    "X2D = pca.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.26203346,  0.42067648],\n",
       "       [-0.08001485, -0.35272239],\n",
       "       [ 1.17545763,  0.36085729],\n",
       "       [ 0.89305601, -0.30862856],\n",
       "       [ 0.73016287, -0.25404049]])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X2D[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.26203346, -0.42067648],\n",
       "       [ 0.08001485,  0.35272239],\n",
       "       [-1.17545763, -0.36085729],\n",
       "       [-0.89305601,  0.30862856],\n",
       "       [-0.73016287,  0.25404049]])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X2D_old[:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 请注意，在稍微不同的数据集中多次运行PCA可能会导致不同的结果。\n",
    "- 一般来说，唯一的区别是有些轴可能会翻转。\n",
    "- 在本例中，使用SciKit Learn的PCA给出的投影与SVD方法给出的投影相同，但两个轴都翻转了："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.allclose(X2D, -X2D_old)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 将PCA转换器应用到数据集之后， 你可以通过变量components_来访问主成分（它包含的主成分是水平向量， \n",
    "- 因此举例来说， 第一个主成分即等于pca.components_.T[： ， 0]） 。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.93636116,  0.34027485],\n",
       "       [-0.29854881, -0.90119108],\n",
       "       [-0.18465208, -0.2684542 ]])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.components_.T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 方差解释率\n",
    "- 另一个非常有用的信息是每个主成分的方差解释率， \n",
    "- 它可以通过变量explained_variance_ratio_获得。 \n",
    "- 它表示每个主成分轴对整个数据集的方差的贡献度。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.84248607, 0.14631839])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.explained_variance_ratio_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 选择正确数量的维度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 除了武断地选择要降至的维度数量， 通常来说更好的办法是将靠前的主成分方差解释率依次相加， 直到得到足够大比例的方差（例如95%） ， \n",
    "- 这时的维度数量就是很好的选择。 \n",
    "- 当然， 除非你正在为了数据可视化而降维——这种情况下， 通常会直接降到二维或三维。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import fetch_openml\n",
    "mnist = fetch_openml('mnist_784', version=1)\n",
    "mnist.target = mnist.target.astype(np.int64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = mnist.data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 计算出包含95%贡献率的维度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA()\n",
    "pca.fit(X)\n",
    "cumsum = np.cumsum(pca.explained_variance_ratio_)\n",
    "d = np.argmax(cumsum >= 0.95) + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.09746116, 0.16901561, 0.23051091, 0.28454476, 0.3334341 ,\n",
       "       0.37648637, 0.40926898, 0.4381654 , 0.46574904, 0.48917044,\n",
       "       0.51023733, 0.53061286, 0.5476835 , 0.5646237 , 0.58045752,\n",
       "       0.59532097, 0.60851456, 0.6213047 , 0.63317742, 0.64470679,\n",
       "       0.65536719, 0.66546513, 0.67505665, 0.684153  , 0.69298586,\n",
       "       0.70137405, 0.70947236, 0.71732954, 0.72473217, 0.73163231,\n",
       "       0.73819375, 0.74464845, 0.75065664, 0.75651276, 0.7621803 ,\n",
       "       0.767615  , 0.77266217, 0.77753297, 0.78232252, 0.78699846,\n",
       "       0.79154214, 0.79599132, 0.80017349, 0.80413513, 0.8079722 ,\n",
       "       0.81173005, 0.81534432, 0.81883456, 0.82222188, 0.82541884,\n",
       "       0.82858738, 0.83168883, 0.83465363, 0.83752465, 0.84034978,\n",
       "       0.84304401, 0.84572793, 0.84829303, 0.85082471, 0.85327119,\n",
       "       0.85566821, 0.85805402, 0.86034636, 0.86255585, 0.86468645,\n",
       "       0.86674963, 0.86877744, 0.87072779, 0.8726425 , 0.87452799,\n",
       "       0.87639775, 0.8781988 , 0.87996667, 0.88170025, 0.88334875,\n",
       "       0.88498112, 0.8865952 , 0.88813824, 0.88960844, 0.89103044,\n",
       "       0.8924406 , 0.89384206, 0.89523811, 0.89658836, 0.89791207,\n",
       "       0.899231  , 0.90052297, 0.90177469, 0.90299999, 0.90420418,\n",
       "       0.90536781, 0.906511  , 0.90763647, 0.90873509, 0.90981852,\n",
       "       0.91089027, 0.91192719, 0.91296138, 0.91396728, 0.91496661,\n",
       "       0.91594334, 0.91688496, 0.91782079, 0.91873245, 0.91963319,\n",
       "       0.92052269, 0.92138427, 0.92223682, 0.92307782, 0.92389505,\n",
       "       0.92468107, 0.92545857, 0.92623439, 0.92699917, 0.92775974,\n",
       "       0.92850853, 0.92923877, 0.92996413, 0.93067997, 0.93138338,\n",
       "       0.93207512, 0.93276204, 0.93344142, 0.93411316, 0.93477443,\n",
       "       0.93541711, 0.93604988, 0.93667828, 0.93729791, 0.93789931,\n",
       "       0.93849958, 0.93909337, 0.93967965, 0.9402631 , 0.940842  ,\n",
       "       0.94141475, 0.94197813, 0.94253042, 0.943066  , 0.94359172,\n",
       "       0.94411446, 0.94462437, 0.94512666, 0.9456248 , 0.94612065,\n",
       "       0.946613  , 0.94709678, 0.94757768, 0.94804925, 0.94851596,\n",
       "       0.94898019, 0.94944218, 0.94990047, 0.95034997, 0.95079714,\n",
       "       0.95123805, 0.95167605, 0.95210242, 0.95252328, 0.95294145,\n",
       "       0.95335445, 0.95376287, 0.95416113, 0.95455512, 0.95494687,\n",
       "       0.95533599, 0.95571939, 0.95609788, 0.95647432, 0.95684638,\n",
       "       0.95721271, 0.95757751, 0.95793954, 0.95829637, 0.95865012,\n",
       "       0.95900242, 0.95934903, 0.95969382, 0.96003568, 0.96037455,\n",
       "       0.9607095 , 0.96103861, 0.96136648, 0.96169065, 0.96201344,\n",
       "       0.9623336 , 0.96265022, 0.96296557, 0.96327544, 0.96358481,\n",
       "       0.96389067, 0.96419322, 0.96449444, 0.96479476, 0.96509028,\n",
       "       0.9653854 , 0.96567824, 0.96596999, 0.96625661, 0.96653954,\n",
       "       0.9668211 , 0.96709847, 0.96737282, 0.96764487, 0.96791337,\n",
       "       0.96818032, 0.96844491, 0.96870854, 0.96897011, 0.96922878,\n",
       "       0.96948623, 0.96974278, 0.96999724, 0.97024999, 0.97050172,\n",
       "       0.97075021, 0.97099709, 0.97124223, 0.97148479, 0.97172585,\n",
       "       0.97196658, 0.97220574, 0.97244411, 0.97268057, 0.97291231,\n",
       "       0.97314346, 0.97337294, 0.97360044, 0.9738275 , 0.97405068,\n",
       "       0.97427157, 0.97449133, 0.9747087 , 0.97492482, 0.97513932,\n",
       "       0.97535229, 0.97556485, 0.97577473, 0.9759841 , 0.97619041,\n",
       "       0.97639504, 0.97659779, 0.9767991 , 0.97699991, 0.97719834,\n",
       "       0.97739582, 0.97759133, 0.97778421, 0.97797684, 0.9781686 ,\n",
       "       0.97835942, 0.9785481 , 0.97873539, 0.9789226 , 0.97910818,\n",
       "       0.97929318, 0.97947707, 0.97965934, 0.97984133, 0.9800213 ,\n",
       "       0.98019827, 0.98037474, 0.98055032, 0.9807241 , 0.98089718,\n",
       "       0.9810694 , 0.98124063, 0.98141076, 0.9815795 , 0.98174654,\n",
       "       0.98191313, 0.98207944, 0.98224342, 0.98240691, 0.98256983,\n",
       "       0.98273155, 0.98289154, 0.98305114, 0.98320998, 0.98336736,\n",
       "       0.98352336, 0.98367788, 0.98383147, 0.98398451, 0.98413622,\n",
       "       0.98428614, 0.98443561, 0.98458358, 0.98473136, 0.98487746,\n",
       "       0.98502198, 0.9851652 , 0.98530797, 0.98545006, 0.98559153,\n",
       "       0.98573178, 0.98586954, 0.98600685, 0.98614311, 0.98627883,\n",
       "       0.98641389, 0.98654826, 0.9866818 , 0.98681423, 0.98694508,\n",
       "       0.98707455, 0.98720327, 0.98733096, 0.9874583 , 0.98758506,\n",
       "       0.98771121, 0.98783717, 0.98796179, 0.988085  , 0.98820693,\n",
       "       0.98832839, 0.98844898, 0.98856873, 0.98868781, 0.98880663,\n",
       "       0.98892392, 0.98904079, 0.98915683, 0.98927271, 0.98938754,\n",
       "       0.98950182, 0.98961399, 0.98972509, 0.98983526, 0.98994529,\n",
       "       0.99005503, 0.99016416, 0.9902724 , 0.99037985, 0.99048639,\n",
       "       0.99059265, 0.99069885, 0.99080369, 0.99090686, 0.9910095 ,\n",
       "       0.99111119, 0.99121161, 0.99131175, 0.99141112, 0.99151036,\n",
       "       0.99160868, 0.99170619, 0.99180308, 0.99189801, 0.99199211,\n",
       "       0.99208598, 0.99217929, 0.99227162, 0.99236323, 0.99245439,\n",
       "       0.99254478, 0.99263456, 0.99272373, 0.99281259, 0.99290056,\n",
       "       0.99298752, 0.99307382, 0.99315945, 0.99324427, 0.99332894,\n",
       "       0.99341255, 0.9934952 , 0.99357759, 0.99365961, 0.99374051,\n",
       "       0.99382135, 0.99390072, 0.99397991, 0.99405814, 0.99413601,\n",
       "       0.99421317, 0.99428941, 0.99436531, 0.99443978, 0.99451366,\n",
       "       0.99458698, 0.99465999, 0.99473239, 0.99480435, 0.99487561,\n",
       "       0.99494588, 0.99501547, 0.99508477, 0.99515276, 0.99522017,\n",
       "       0.99528704, 0.99535295, 0.99541771, 0.9954817 , 0.99554505,\n",
       "       0.99560818, 0.99566995, 0.99573098, 0.99579104, 0.99585078,\n",
       "       0.9959097 , 0.99596825, 0.99602628, 0.99608361, 0.99614003,\n",
       "       0.996196  , 0.9962514 , 0.99630588, 0.99636024, 0.99641449,\n",
       "       0.99646742, 0.9965202 , 0.99657247, 0.9966241 , 0.99667525,\n",
       "       0.9967259 , 0.99677565, 0.99682503, 0.99687401, 0.99692228,\n",
       "       0.99696977, 0.9970167 , 0.99706304, 0.9971093 , 0.99715454,\n",
       "       0.99719914, 0.99724256, 0.99728497, 0.99732703, 0.99736898,\n",
       "       0.9974102 , 0.99745141, 0.99749225, 0.99753274, 0.99757293,\n",
       "       0.99761143, 0.99764964, 0.99768763, 0.99772533, 0.99776254,\n",
       "       0.99779943, 0.99783586, 0.99787114, 0.99790623, 0.99794118,\n",
       "       0.99797567, 0.99801002, 0.99804427, 0.99807724, 0.99810988,\n",
       "       0.99814192, 0.9981737 , 0.99820509, 0.9982359 , 0.99826576,\n",
       "       0.99829545, 0.99832467, 0.99835366, 0.99838258, 0.9984109 ,\n",
       "       0.9984386 , 0.99846609, 0.99849326, 0.99852001, 0.99854566,\n",
       "       0.99857088, 0.99859584, 0.99862051, 0.99864497, 0.99866931,\n",
       "       0.99869345, 0.99871743, 0.99874088, 0.99876424, 0.99878734,\n",
       "       0.99880978, 0.99883194, 0.99885349, 0.99887488, 0.9988961 ,\n",
       "       0.99891695, 0.99893763, 0.99895791, 0.99897781, 0.99899756,\n",
       "       0.99901705, 0.99903634, 0.99905537, 0.99907416, 0.99909254,\n",
       "       0.99911058, 0.99912854, 0.99914581, 0.99916293, 0.99917913,\n",
       "       0.99919524, 0.99921106, 0.99922682, 0.99924222, 0.99925759,\n",
       "       0.99927283, 0.99928769, 0.99930236, 0.99931678, 0.99933093,\n",
       "       0.99934485, 0.99935849, 0.99937201, 0.99938544, 0.99939873,\n",
       "       0.9994116 , 0.99942416, 0.99943642, 0.99944866, 0.99946081,\n",
       "       0.99947275, 0.99948434, 0.99949583, 0.99950726, 0.99951858,\n",
       "       0.99952979, 0.99954077, 0.99955159, 0.99956213, 0.99957255,\n",
       "       0.99958282, 0.99959284, 0.99960219, 0.99961139, 0.99962054,\n",
       "       0.99962964, 0.99963858, 0.99964724, 0.99965569, 0.99966375,\n",
       "       0.99967161, 0.99967944, 0.99968722, 0.99969499, 0.9997026 ,\n",
       "       0.99971012, 0.99971754, 0.99972483, 0.99973202, 0.99973916,\n",
       "       0.99974617, 0.99975292, 0.99975965, 0.99976598, 0.99977223,\n",
       "       0.9997784 , 0.99978423, 0.99978989, 0.9997954 , 0.99980089,\n",
       "       0.99980626, 0.99981158, 0.99981678, 0.99982168, 0.99982653,\n",
       "       0.99983136, 0.99983615, 0.9998407 , 0.9998452 , 0.99984966,\n",
       "       0.99985411, 0.99985848, 0.99986262, 0.99986673, 0.99987068,\n",
       "       0.99987456, 0.9998784 , 0.99988221, 0.9998856 , 0.99988892,\n",
       "       0.99989212, 0.99989529, 0.99989844, 0.99990155, 0.99990463,\n",
       "       0.99990768, 0.99991064, 0.99991354, 0.99991643, 0.99991918,\n",
       "       0.9999217 , 0.9999242 , 0.99992658, 0.99992889, 0.99993105,\n",
       "       0.9999332 , 0.99993531, 0.99993741, 0.99993944, 0.99994146,\n",
       "       0.99994343, 0.99994535, 0.99994717, 0.99994896, 0.9999507 ,\n",
       "       0.99995244, 0.99995412, 0.99995576, 0.99995737, 0.99995897,\n",
       "       0.99996052, 0.99996202, 0.99996332, 0.99996462, 0.99996591,\n",
       "       0.99996718, 0.99996839, 0.99996954, 0.99997063, 0.99997171,\n",
       "       0.99997279, 0.99997385, 0.99997489, 0.99997591, 0.9999769 ,\n",
       "       0.99997784, 0.99997876, 0.9999796 , 0.99998044, 0.99998126,\n",
       "       0.99998207, 0.99998287, 0.9999836 , 0.9999843 , 0.99998496,\n",
       "       0.99998561, 0.99998623, 0.99998684, 0.99998745, 0.99998805,\n",
       "       0.99998862, 0.99998917, 0.99998972, 0.99999024, 0.99999075,\n",
       "       0.99999123, 0.99999168, 0.99999213, 0.99999254, 0.99999293,\n",
       "       0.99999331, 0.99999368, 0.99999405, 0.99999439, 0.99999468,\n",
       "       0.99999496, 0.99999524, 0.99999551, 0.99999578, 0.99999604,\n",
       "       0.9999963 , 0.99999654, 0.99999675, 0.99999696, 0.99999715,\n",
       "       0.99999733, 0.99999751, 0.99999769, 0.99999785, 0.999998  ,\n",
       "       0.99999815, 0.99999828, 0.99999841, 0.99999852, 0.99999864,\n",
       "       0.99999876, 0.99999887, 0.99999898, 0.99999907, 0.99999916,\n",
       "       0.99999924, 0.99999931, 0.99999939, 0.99999945, 0.99999951,\n",
       "       0.99999956, 0.99999961, 0.99999965, 0.99999969, 0.99999972,\n",
       "       0.99999976, 0.99999978, 0.99999981, 0.99999984, 0.99999986,\n",
       "       0.99999988, 0.99999989, 0.9999999 , 0.99999992, 0.99999993,\n",
       "       0.99999994, 0.99999995, 0.99999996, 0.99999996, 0.99999997,\n",
       "       0.99999998, 0.99999998, 0.99999998, 0.99999999, 0.99999999,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "       1.        , 1.        , 1.        , 1.        ])"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cumsum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "154"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.09746116, 0.07155445, 0.06149531, 0.05403385, 0.04888934,\n",
       "       0.04305227, 0.03278262, 0.02889642, 0.02758364, 0.0234214 ,\n",
       "       0.02106689, 0.02037553, 0.01707064, 0.0169402 , 0.01583382,\n",
       "       0.01486345, 0.01319358, 0.01279014, 0.01187272, 0.01152937,\n",
       "       0.0106604 , 0.01009794, 0.00959151, 0.00909635, 0.00883287,\n",
       "       0.00838818, 0.00809832, 0.00785718, 0.00740262, 0.00690014,\n",
       "       0.00656144, 0.0064547 , 0.00600819, 0.00585612, 0.00566754,\n",
       "       0.00543471, 0.00504717, 0.00487079, 0.00478955, 0.00467594,\n",
       "       0.00454369, 0.00444918, 0.00418217, 0.00396164, 0.00383708,\n",
       "       0.00375785, 0.00361426, 0.00349025, 0.00338732, 0.00319696,\n",
       "       0.00316854, 0.00310145, 0.0029648 , 0.00287101, 0.00282514,\n",
       "       0.00269423, 0.00268392, 0.00256509, 0.00253168, 0.00244648,\n",
       "       0.00239702, 0.00238581, 0.00229234, 0.00220949, 0.0021306 ,\n",
       "       0.00206317, 0.00202781, 0.00195035, 0.0019147 , 0.00188549,\n",
       "       0.00186976, 0.00180104, 0.00176787, 0.00173358, 0.00164849,\n",
       "       0.00163237, 0.00161408, 0.00154304, 0.00147019, 0.00142198,\n",
       "       0.00141015, 0.00140145, 0.00139603, 0.00135022, 0.0013237 ,\n",
       "       0.00131889, 0.00129195, 0.0012517 , 0.00122525, 0.00120417,\n",
       "       0.00116357, 0.00114311, 0.00112543, 0.00109849, 0.00108333,\n",
       "       0.00107166, 0.00103675, 0.00103406, 0.00100571, 0.00099923,\n",
       "       0.00097658, 0.00094146, 0.00093533, 0.00091114, 0.00090046,\n",
       "       0.00088921, 0.00086129, 0.00085214, 0.00084053, 0.00081658,\n",
       "       0.00078558, 0.00077654, 0.00077433, 0.00076411, 0.0007578 ,\n",
       "       0.00074778, 0.00072952, 0.00072241, 0.00071443, 0.00070275,\n",
       "       0.00069044, 0.00068451, 0.00067765, 0.00067075, 0.00065792,\n",
       "       0.00064055, 0.00062727, 0.00062463, 0.00061673, 0.00059992,\n",
       "       0.00059327, 0.00058906, 0.00058232, 0.00057723, 0.00057379,\n",
       "       0.00056552, 0.00055451, 0.00054454, 0.00052436, 0.00052051,\n",
       "       0.00051395, 0.00049989, 0.00049039, 0.00048513, 0.00047952,\n",
       "       0.00047067, 0.00046519, 0.0004647 , 0.000458  , 0.00045418,\n",
       "       0.00044276, 0.00044073, 0.0004338 , 0.00042666])"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca = PCA(n_components=d)\n",
    "pca.fit(X)\n",
    "pca.explained_variance_ratio_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 直接得到包含95%维度的降维数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA(n_components=0.95)\n",
    "X_reduced = pca.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.09746116, 0.07155445, 0.06149531, 0.05403385, 0.04888934,\n",
       "       0.04305227, 0.03278262, 0.02889642, 0.02758364, 0.0234214 ,\n",
       "       0.02106689, 0.02037553, 0.01707064, 0.0169402 , 0.01583382,\n",
       "       0.01486345, 0.01319358, 0.01279014, 0.01187272, 0.01152937,\n",
       "       0.0106604 , 0.01009794, 0.00959151, 0.00909635, 0.00883287,\n",
       "       0.00838818, 0.00809832, 0.00785718, 0.00740262, 0.00690014,\n",
       "       0.00656144, 0.0064547 , 0.00600819, 0.00585612, 0.00566754,\n",
       "       0.00543471, 0.00504717, 0.00487079, 0.00478955, 0.00467594,\n",
       "       0.00454369, 0.00444918, 0.00418217, 0.00396164, 0.00383708,\n",
       "       0.00375785, 0.00361426, 0.00349025, 0.00338732, 0.00319696,\n",
       "       0.00316854, 0.00310145, 0.0029648 , 0.00287101, 0.00282514,\n",
       "       0.00269423, 0.00268392, 0.00256509, 0.00253168, 0.00244648,\n",
       "       0.00239702, 0.00238581, 0.00229234, 0.00220949, 0.0021306 ,\n",
       "       0.00206317, 0.00202781, 0.00195035, 0.00191471, 0.0018855 ,\n",
       "       0.00186976, 0.00180104, 0.00176787, 0.00173359, 0.00164849,\n",
       "       0.00163237, 0.00161408, 0.00154304, 0.0014702 , 0.00142199,\n",
       "       0.00141016, 0.00140146, 0.00139605, 0.00135025, 0.00132371,\n",
       "       0.00131893, 0.00129197, 0.00125172, 0.00122529, 0.00120419,\n",
       "       0.00116363, 0.00114319, 0.00112547, 0.00109862, 0.00108343,\n",
       "       0.00107175, 0.00103692, 0.00103418, 0.00100591, 0.00099933,\n",
       "       0.00097674, 0.00094161, 0.00093583, 0.00091166, 0.00090074,\n",
       "       0.0008895 , 0.00086158, 0.00085255, 0.000841  , 0.00081723,\n",
       "       0.00078602, 0.0007775 , 0.00077581, 0.00076479, 0.00076057,\n",
       "       0.00074879, 0.00073024, 0.00072536, 0.00071584, 0.00070341,\n",
       "       0.00069175, 0.00068692, 0.00067938, 0.00067174, 0.00066127,\n",
       "       0.00064267, 0.00063277, 0.0006284 , 0.00061963, 0.0006014 ,\n",
       "       0.00060026, 0.00059379, 0.00058628, 0.00058345, 0.0005789 ,\n",
       "       0.00057275, 0.00056338, 0.0005523 , 0.00053557, 0.00052572,\n",
       "       0.00052274, 0.0005099 , 0.0005023 , 0.00049814, 0.00049585,\n",
       "       0.00049234, 0.00048378, 0.0004809 , 0.00047157, 0.00046671,\n",
       "       0.00046423, 0.00046199, 0.00045828, 0.0004495 ])"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.explained_variance_ratio_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9503499702078612"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sum(pca.explained_variance_ratio_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(154,)"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.explained_variance_ratio_.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 绘制成关于维度数量的函数（绘制cumsum即可)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA()\n",
    "pca.fit(X)\n",
    "cumsum = np.cumsum(pca.explained_variance_ratio_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(784,)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cumsum.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_temp = np.linspace(0,784, 784)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '解释方差')"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(X_temp, cumsum)\n",
    "plt.xlim(0,784)\n",
    "plt.ylim(0,1.0)\n",
    "plt.plot(X_temp, np.linspace(0.95, 0.95, 784), '--')\n",
    "plt.xlabel('维度数量', fontsize=18)\n",
    "plt.ylabel('解释方差', fontsize=18)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## PCA压缩"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 显然， 降维之后训练集占用的空间要小得多。 \n",
    "- 例如， 对MNIST数据集应用主成分分析， 然后保留其方差的95%。 \n",
    "- 你会发现， 原来每个实例的784个特征变得只有150多个特征。 \n",
    "- 所以这保留了绝大部分差异性的同时， 数据集的大小变为不到原始的20%！ \n",
    "- 这是一个合理的压缩比， 你可以看看它如何极大提升分类算法（例如SVM分类器） 的速度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 在PCA投影上运行投影的逆转换， 也可以将缩小的数据集解压缩回784维数据集。 \n",
    "- 当然， 你得到的并非原始的数据， 因为投影时损失了一部分信息（5%被丢弃的方差） ， \n",
    "- 但是它很大可能非常接近于原始数据。 \n",
    "- 原始数据和重建数据（压缩之后解压缩） 之间的均方距离，被称为重建误差。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ X_{recovered}=X_{d-proj}·W_d^T $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = mnist.data\n",
    "y = mnist.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA(n_components=154)\n",
    "X_reduced = pca.fit_transform(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(52500, 154)"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_reduced.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(52500, 784)"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.inverse_transform(X_reduced).shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 增量PCA"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 前面关于主成分分析的种种实现， 问题在于， 它需要整个训练集都进入内存， 才能运行SVD算法。\n",
    "- 幸运的是， 我们有增量主成分分析（IPCA） 算法： \n",
    "- 你可以将训练集分成一个个小批量， 一次给IPCA算法喂一个。 \n",
    "- 对于大型训练集来说， 这个方法很有用， 并且还可以在线应用PCA（也就是新实例产生时， 算法开始运行）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 以下代码将MNIST数据集分成100个小批量（使用NumPy的array_split（） 函数） ， \n",
    "- 将它们提供给Scikit-Learn的- IncrementalPCA\n",
    "- 将数据集降到154维（跟之前一样） 。 \n",
    "- 注意， 你必须为每个小批量调用partial_fit（） 方法， 而不是之前整个训练集的fit（） 方法："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.decomposition import IncrementalPCA\n",
    "n_batches = 100\n",
    "inc_pca = IncrementalPCA(n_components=154)\n",
    "for X_batch in np.array_split(X, n_batches):\n",
    "    inc_pca.partial_fit(X_batch)\n",
    "\n",
    "X_reduced = inc_pca.transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9496651061456837"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sum(inc_pca.explained_variance_ratio_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 也可以使用NumPy的memmap类， \n",
    "- 它允许你巧妙地操控一个存储在磁盘二进制文件里的大型数组， 就好似它也完全在内存里一样，\n",
    "- 而这个类（memmap） 仅在需要时加载内存中需要的数据。\n",
    "- 由于IncrementalPCA在任何时间都只使用数组的一小部分，\n",
    "- 因此内存的使用情况仍然受控， 这时可以调用常用的fit（） 方法， 如以下代码所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# X_mm = np.memmap(filename, dtype=\"float32\", mode=\"readonly\", shape=(m, n))\n",
    "# batch_size = m // n_batches\n",
    "# inc_pca = IncrementalPCA(n_components=154, batch_size=batch_size)\n",
    "# inc_pca.fit(X_mm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 随机PCA"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Scikit-Learn还提供了另一种实施PCA的选项， 称为随机PCA。 \n",
    "- 这是一个随机算法， 可以快速找到前d个主成分的近似值。 \n",
    "- 它的计算复杂度是O（m×d2） +O（d3） ， 而不是O（m×n2） +O（n3） ， \n",
    "- 所以当d远小于n时， 它比前面提到的算法要快得多。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [],
   "source": [
    "rnd_pca = PCA(n_components=154, svd_solver='randomized')\n",
    "X_reduced = rnd_pca.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9499543357544052"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sum(rnd_pca.explained_variance_ratio_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 核主成分分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 第5章讨论了核技巧， 它是一种数学技巧， 隐性地将实例映射到非常高维的空间（称为特征空间） ， - 从而使支持向量机能够进行非线性分类和回归。 \n",
    "- 回想一下， 高维特征空间的线性决策边界如何对应于原始空间中复杂的非线性决策边界。\n",
    "- 事实证明， 同样的技巧也可应用于PCA， 使复杂的非线性投影降维成为可能。 \n",
    "- 它擅长在投影后保留实例的集群， 有时甚至也能展开近似于一个扭曲流形的数据集。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import make_swiss_roll\n",
    "from sklearn.decomposition import KernelPCA\n",
    "X, t = make_swiss_roll(n_samples=1000, noise=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [],
   "source": [
    "rbf_pca = KernelPCA(n_components=2, kernel='rbf', gamma=0.04)\n",
    "X_reduced = rbf_pca.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 792x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.decomposition import KernelPCA\n",
    "\n",
    "lin_pca = KernelPCA(n_components = 2, kernel=\"linear\", fit_inverse_transform=True)\n",
    "rbf_pca = KernelPCA(n_components = 2, kernel=\"rbf\", gamma=0.0433, fit_inverse_transform=True)\n",
    "sig_pca = KernelPCA(n_components = 2, kernel=\"sigmoid\", gamma=0.001, coef0=1, fit_inverse_transform=True)\n",
    "\n",
    "y = t > 6.9\n",
    "\n",
    "plt.figure(figsize=(11, 4))\n",
    "for subplot, pca, title in ((131, lin_pca, \"Linear kernel\"), (132, rbf_pca, \"RBF kernel, $\\gamma=0.04$\"), (133, sig_pca, \"Sigmoid kernel, $\\gamma=10^{-3}, r=1$\")):\n",
    "    X_reduced = pca.fit_transform(X)\n",
    "    if subplot == 132:\n",
    "        X_reduced_rbf = X_reduced\n",
    "    \n",
    "    plt.subplot(subplot)\n",
    "    #plt.plot(X_reduced[y, 0], X_reduced[y, 1], \"gs\")\n",
    "    #plt.plot(X_reduced[~y, 0], X_reduced[~y, 1], \"y^\")\n",
    "    plt.title(title, fontsize=14)\n",
    "    plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=t, cmap=plt.cm.hot)\n",
    "    plt.xlabel(\"$z_1$\", fontsize=18)\n",
    "    if subplot == 131:\n",
    "        plt.ylabel(\"$z_2$\", fontsize=18, rotation=0)\n",
    "    plt.grid(True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 选择核函数和调整超参数\n",
    "- 由于kPCA是一种无监督的学习算法， 因此没有明显的性能指标来帮你选择最佳的核函数和超参数值。\n",
    "- 而降维通常是监督式学习任务（例如分类） 的准备步骤， \n",
    "- 所以可以使用网格搜索， 来找到使任务性能最佳的核和超参数。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 下面的代码创建了一个两步流水线，\n",
    "- 首先使用kPCA将维度降至二维， \n",
    "- 然后应用逻辑回归进行分类。 \n",
    "- 接下来使用GridSearchCV为kPCA找到最佳的核和gamma值， \n",
    "- 从而在流水线最后获得最准确的分类："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.pipeline import Pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf = Pipeline([\n",
    "    ('kpca', KernelPCA(n_components=2)),\n",
    "    ('log_reg', LogisticRegression(solver=\"liblinear\"))\n",
    "])\n",
    "\n",
    "param_grid = [{\n",
    "        \"kpca__gamma\": np.linspace(0.03, 0.05, 10),\n",
    "        \"kpca__kernel\": [\"rbf\", \"sigmoid\"]\n",
    "}]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [],
   "source": [
    "grid_search = GridSearchCV(clf, param_grid, cv=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, t = make_swiss_roll(n_samples=1000, noise=0.2, random_state=42)\n",
    "y = t > 6.9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000, 3)"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000,)"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=3, error_score='raise-deprecating',\n",
       "             estimator=Pipeline(memory=None,\n",
       "                                steps=[('kpca',\n",
       "                                        KernelPCA(alpha=1.0, coef0=1,\n",
       "                                                  copy_X=True, degree=3,\n",
       "                                                  eigen_solver='auto',\n",
       "                                                  fit_inverse_transform=False,\n",
       "                                                  gamma=None, kernel='linear',\n",
       "                                                  kernel_params=None,\n",
       "                                                  max_iter=None, n_components=2,\n",
       "                                                  n_jobs=None,\n",
       "                                                  random_state=None,\n",
       "                                                  remove_zero_eig=False,\n",
       "                                                  tol=0)),\n",
       "                                       ('log_reg',\n",
       "                                        LogisticReg...\n",
       "                                                           solver='liblinear',\n",
       "                                                           tol=0.0001,\n",
       "                                                           verbose=0,\n",
       "                                                           warm_start=False))],\n",
       "                                verbose=False),\n",
       "             iid='warn', n_jobs=None,\n",
       "             param_grid=[{'kpca__gamma': array([0.03      , 0.03222222, 0.03444444, 0.03666667, 0.03888889,\n",
       "       0.04111111, 0.04333333, 0.04555556, 0.04777778, 0.05      ]),\n",
       "                          'kpca__kernel': ['rbf', 'sigmoid']}],\n",
       "             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,\n",
       "             scoring=None, verbose=0)"
      ]
     },
     "execution_count": 150,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_search.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'kpca__gamma': 0.043333333333333335, 'kpca__kernel': 'rbf'}"
      ]
     },
     "execution_count": 151,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_search.best_params_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 还有一种完全不受监督方法， 就是选择重建误差最低的核和超参数。 \n",
    "- 但是这个重建不像线性PCA重建那样容易。 我们来看看原因， \n",
    "- 图8-11显示了瑞士卷的原始3D数据集（左上） ， 和应用RBF核的kPCA得到的二维数据集（右上） 。 \n",
    "- 因为核技巧， 所以这在数学上等同于：\n",
    "- 通过特征映射函数 ， 将训练集映射到无限维度的特征空间（右下） ，\n",
    "- 然后用线性PCA将转换后的训练集投影到2D平面。 \n",
    "- 注意， 如果我们对一个已经降维的实例进行线性PCA逆转换， 重建的点将存在于特征空间， 而不是原始空间中（例如， 图中x表示的那个点） 。 \n",
    "- 而这里特征空间是无限维度的， 所以我们无法计算出重建点， \n",
    "- 因此也无法计算出真实的重建误差。 \n",
    "- 幸好， 我们可以在原始空间中找到一个点， 使其映射接近于重建点。 \n",
    "- 这被称为重建原像。 一旦有了这个原像， 你就可以测量它到原始实例的平方距离。 最后， \n",
    "- 便可以选择使这个重建原像误差最小化的核和超参数\n",
    "\n",
    "![](img/8-11.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [],
   "source": [
    "rbf_pca = KernelPCA(n_components=2, kernel='rbf', gamma=0.0433,\n",
    "                   fit_inverse_transform=True)\n",
    "X_reduced = rbf_pca.fit_transform(X)\n",
    "X_preimage = rbf_pca.inverse_transform(X_reduced)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000, 2)"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_reduced.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000, 3)"
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_preimage.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "32.78630879576614"
      ]
     },
     "execution_count": 161,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "mean_squared_error(X, X_preimage)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 局部线性嵌入"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 局部线性嵌入（https://goo.gl/iA9bns） （LLE）是另一种非常强大的非线性降维（NLDR） 技术。 \n",
    "- 不像之前的算法依赖于投影， 它是一种流形学习技术。 \n",
    "- 简单来说， LLE首先测量每个算法如何与其最近的邻居（c.n.） 线性相关，\n",
    "- 然后为训练集寻找一个能最大程度保留这些局部关系的低维表示（细节稍后解释） 。 \n",
    "- 这使得它特别擅长展开弯曲的流形， 特别是没有太多噪声时。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 例如， 下面的代码使用Scikit-Learn的LocallyLinearEmbedding类来展开瑞士卷。 得到的二维数据集如图8-12所示。 \n",
    "- 正如你所见， 瑞士卷完全展开， 实例之间的距离局部保存得很好。 \n",
    "- 不过从整体来看， 距离保存得不够好： 展开的瑞士卷左侧被挤压， 而右侧被拉长。 \n",
    "- 尽管如此， 对于流形建模来说， LLE还是做得相当不错。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, t = make_swiss_roll(n_samples=1000, noise=0.2, random_state=41)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.manifold import LocallyLinearEmbedding"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [],
   "source": [
    "lle = LocallyLinearEmbedding(n_components=2, n_neighbors=10, random_state=42)\n",
    "X_reduced = lle.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x14915c7f940>"
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=t, cmap=plt.cm.hot)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 下面是LLE的工作原理：\n",
    "- 首先， 对于每个训练实例x（i） ， \n",
    "- 算法会识别出离它最近的k个邻居（上面的代码中k=10） ， \n",
    "- 然后尝试将x（i）重建为这些邻居的线性函数。 \n",
    "- 更具体来说， 就是要找到权重wi， j使实例x（i） 和 之间的距离平方最小， \n",
    "- 如果实例x（i） 不是实例x（i）的k个最近的邻居之一， wi， j＝0。 \n",
    "- 因此， LLE的第一步就是公式8-4所示的约束优化问题， 其中W是包含所有权重wi， j的权重矩阵， - 第二个约束则是简单地对每个训练实例x（i） 的权重进行归一。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## LLE第一步： 对局部关系线性建模"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ \\hat{W}=argmin_W\\sum_{i=1}^m||X^{(i)}-\\sum_{j=1}^nw_{i,j}X^{(i)}||^2 $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 这一步完成后， 权重矩阵 （包含权重 ） 对训练实例之间的局部线性关系进行编码。 \n",
    "- 现在， 第二步就是要将训练实例映射到一个d维空间（d＜n） ， 同时尽可能保留这些局部关系。 \n",
    "- 如果z（i） 是实例x（i） 在这个d维空间的映像， \n",
    "- 那么我们希望从z（i） 到 之间的平方距离尽可能小。 \n",
    "- 这个想法产生了如下公式描述的一个无约束优化问题。 \n",
    "- 它看起来与第一步类似， 但不是保持固定距离寻找最佳权重， 而是保持固定权重， 并在低维空间中找到每个实例映像的最佳位置。 注意Z是包含所有z（i） 的矩阵。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## LLE第二步： 保留关系并降维"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$ \\hat{Z}=argmin_Z\\sum_{i=1}^m|| z^{(i)}-\\sum_{j=1}^m\\hat{w}_{i,j}Z^{(j)} ||^2 $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Scikit-Learn的LLE实现， 计算复杂度如下： \n",
    "- 寻找k个最近邻为O（m log（m） n log（k） ） ； \n",
    "- 优化权重为O（mnk3） ； \n",
    "- 构建低维表示， 为O（dm2） 。 \n",
    "- 很不幸， 最后一个表达式里的m2说明这个算法很难扩展应用到大型数据集。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 其他降维技巧"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多维缩放（MDS） 算法，\n",
    "- 保持实例之间的距离， 降低维度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 等度量映射（Isomap） 算法， \n",
    "- 将每个实例与其最近的邻居连接起来， 创建连接图形， 然后保留实例之间的这个测地距离， [1]降低维度。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## t-分布随机近邻嵌入（t-SNE） 算法\n",
    "- 在降低维度时， 试图让相似的实例彼此靠近， 不相似的实例彼此远离。 \n",
    "- 它主要用于可视化， 尤其是将高维空间中的实例集群可视化（例如， 对MNIST图像进行二维可视化） 。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 线性判别（LDA）\n",
    "- 实际上是一种分类算法， \n",
    "- 但是在训练过程中， 它会学习类别之间最有区别的轴， \n",
    "- 而这个轴正好可以用来定义投影数据的超平面。 \n",
    "- 这样做的好处在于投影上的类别之间会尽可能的分开， \n",
    "- 所以在运行其他分类算法——比如SVM分类器之前， LDA是一个不错的降维手段"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](img/8-12.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc-autonumbering": true
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
